<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one
  ~ or more contributor license agreements.  See the NOTICE file
  ~ distributed with this work for additional information
  ~ regarding copyright ownership.  The ASF licenses this file
  ~ to you under the Apache License, Version 2.0 (the
  ~ "License"); you may not use this file except in compliance
  ~ with the License.  You may obtain a copy of the License at
  ~
  ~   http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing,
  ~ software distributed under the License is distributed on an
  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~ KIND, either express or implied.  See the License for the
  ~ specific language governing permissions and limitations
  ~ under the License.
  -->

<form [formGroup]="editRuleForm">
    <div class="edit-rule mt-2 flex flex-col gap-y-4">
        <div class="flex">
            <div class="w-1/2">
                <mat-form-field>
                    <mat-label>Name</mat-label>
                    <input matInput type="text" [readonly]="!isEditable" formControlName="name" />
                    @if (nameControl.invalid) {
                        <mat-error>{{ getNameErrorMessage() }}</mat-error>
                    }
                </mat-form-field>
            </div>
        </div>
        <div class="flex">
            <div class="w-1/2">
                <mat-form-field class="w-1/2">
                    <mat-label>Comments</mat-label>
                    <textarea matInput [readonly]="!isEditable" formControlName="comments" type="text"></textarea>
                </mat-form-field>
            </div>
        </div>
        <div class="flex flex-col gap-y-1">
            <condition-table formControlName="conditions" [isNew]="!id"></condition-table>
            @if (conditionControl.invalid) {
                <div class="ml-4 error-color text-sm">{{ getConditionErrorMessage() }}</div>
            }
        </div>
        <div class="flex flex-col gap-y-1">
            <action-table formControlName="actions" [isNew]="!id"></action-table>
            @if (actionControl.invalid) {
                <div class="ml-4 error-color text-sm">{{ getActionErrorMessage() }}</div>
            }
        </div>
        <div class="flex justify-end gap-x-2">
            @if (isEditable) {
                <button type="button" (click)="cancelClicked()" mat-button>Cancel</button>
                @if (id) {
                    <button
                        [disabled]="!editRuleForm.dirty || editRuleForm.invalid || saving || editRuleForm.pending"
                        type="button"
                        (click)="saveClicked()"
                        mat-flat-button>
                        Sav{{ saving ? 'ing' : 'e' }}
                    </button>
                } @else {
                    <button
                        [disabled]="editRuleForm.invalid || saving || editRuleForm.pending"
                        type="button"
                        (click)="saveClicked()"
                        mat-flat-button>
                        Add{{ saving ? 'ing' : '' }}
                    </button>
                }
            }
        </div>
    </div>
</form>
